package cn.snowheart

/**
 * 运算符
 *
 * @author liuwanxiang
 * @version 2019/05/31
 */
class OperatorExample {

    static void main(String[] args){

        int i = 2;
        int j = 10;

        // 基础算术运算
        println(i + j);
        println(i - j);
        println(i * j);
        println(i / j); // TODO 额外注意，两个int相除会除出来小数，这个和Java不一样
        println(i % j);
        println(i++);
        println(++i);
        println(j--);
        println(--j);

        println("====================")

        // 关系运算符
        println(i == j);
        println(i != j);
        println(i < j);
        println(i <= j);
        println(i > j);
        println(i >= j);

        println("====================")

        // 逻辑运算符
        println(true || false);
        println(true && false);
        println(!false);
        println(false | true);
        println(false & true);

        println("====================")

        // 位运算符
        int p = 1;
        int q = 0;
        println(p | q);//或   同假则假
        println(p & q);//与   同真则真
        println(p ^ q);//异或 不同则真
        println(~q);//按位取反

        println("====================")

        // 赋值运算符
        println(i += 1);
        println(i -= 1);
        println(i *= 1);
        println(i /= 1);
        println(i %= 1);

        println("====================")

        // 范围运算符
        def range = 1..5;
        println(range);
        println(range.size());
        println(range.get(2));

        // 运算符优先级顺序基本与Java一致
    }

}
